1. Field of the Invention
This invention relates generally to computer system/user interfaces and, more particularly, to a computer system/user interface having the ability to quickly locate and display data that a user has indicated he would like to see displayed on a computer screen.
2. Description of the Related Art
A graphical user interface (GUI) is a type of computer system/user interface that provides structured data objects displayed as icons or object metaphors that can be controlled by users to manipulate the underlying data objects and initiate system actions. The object metaphors are displayed on a workstation display device and are manipulated with a user input device, such as a keyboard, track ball, or mouse. A GUI provides a more efficient, user-friendly interface with which a user can operate a computer system workstation. A GUI also permits many applications to share the workstation display screen and thereby permits the user to easily move and share data between multiple applications or data structures.
The movement and sharing of data between applications and data structures is possible because the GUI provides a blank area display called a desktop, in which are displayed one or more working areas called "windows". Data entered by the user, as well as icons or object metaphors, can be displayed in the windows and can be manipulated by the user. In general, each window has several icons with which a user can interact to manipulate and change the display and to initiate system actions.
A common type of GUI provides a window display representing readily identifiable office object metaphors operated on by the system after the user has designated the metaphor by moving the display cursor over the metaphor with a display mouse device and then pressing or "clicking" a display mouse device button. For example, in a GUI a file folder metaphor (a 2-dimensional representation of a file folder) can represent a data object containing one or more documents. A user can open the file folder metaphor and display its contents, which can be documented data objects represented by document icons, by moving the display cursor over the file folder metaphor and clicking the mouse button while the cursor is positioned over the metaphor. The computer system responds to the button clicking on the file folder by changing the file folder metaphor, such as replacing the working area of the window with a display of the first page of the subject document.
A GUI is fundamentally a protocol by which an application can generate output on a computer that has a bit-mapped display and can receive input from devices associated with the display. Through an application programming interface (API) different applications can interact with the interface and the underlying operating system. One popular operating system is the UNIX operating system which was originally developed by Bell Labs. Many versions of the UNIX operating system are provided by various computer companies. For example, the IBM Corporation provides an operating system known as AIX which is readily familiar to those with a background in UNIX programming. One GUI that is available to work with AIX is OSF/Motif which is based on the X-window system, often abbreviated as X. OSF/Motif is available from the Open Software Foundation, Inc. (OSF). The X-window system was developed by the Massachusetts Institute of Technology.
OSF/Motif is the means by which an application program can obtain input from and display output to a user of the application. Motif provides the intermediary mechanisms for communication between the application and the user. To both sides, these mechanisms appear as a set of objects with graphical representations on the screens. The program creates and displays objects of a variety of types provided by Motif for showing the user particular kinds of output and requesting particular kinds of input. The user supplies input by manipulating the screen representations as objects with a pointer, a keyboard, or both as described above. The Motif API is supplied by OSF and is implemented in the "C" programming language. Motif requires that an application written in C conform to the American National Standards Institute (ANSI). For this reason, it is convenient to explain the logic implemented by this invention in terms of the C language conforming to ANSI standards; however, it will be apparent to those skilled in the art that other programming languages as well as well-known hardware logic can be substituted in view of the teachings described below. For a comprehensive overview and description of how to program to communicate with the OSF/Motif API, reference may be made to the OSF/Motif Programmer's Guide, Release 1.2, provided by the Open Software Foundation, Inc.
The X-window system upon which Motif is based is architectured along the client-server computing model. The application program is the client, communicating through the X protocol with a server that handles the direct output to an input from the display. The client and server may be running on the same machine or on different machines, communicating over a network. Applications do not communicate with the X server directly. Instead they use one or more libraries that provide high-level interfaces to the X protocol. The three principal libraries available to a Motif application are X lib, the X tool kit intrinsics (Xt), and Motif tool kit. Three of the most important Xt contributions are the following: objects, known as widgets, used to hold data and present an interface to the user; management of widget geometry; and dispatching and handling of events.
A widget is a combination of state and procedure. Each instance of a widget is a member of a class. A widget class holds a set of procedures and data structures that are common to all widgets of that class. A widget instance contains the procedures and data structures that are particular to that single widget. A widget instance also has a pointer to its class. Each widget class typically provides a general behavior associated with a particular kind of interaction with the user. For example, Motif has a widget class designed to let the user enter and edit text. This class provides a general behavior to support test input and display, including editing, selection, cutting and pasting of text. The class has data structures related not only to the context of the text but also to the appearance of the widgets when displayed as object metaphors. To use this class, an application creates an instance of this class of widget and provides some of its own data and procedures for the widget instance.
Xt and Motif are intended to provide all the widget classes that most applications need. The user, the application, and the widget class are combined to provide values for resources and thus to control the appearance and other attributes of components of the application. The user and the application can also supply different resource specifications, depending on the locale, the characteristics of the screen, or arbitrary customization criteria. When the application starts up, Xt combines these specifications into an initial resource database. When the application creates a widget, Xt assigns initial values to the widgets resources using the specification from the database, from values supplied by the application at creation time, or from defaults supplied by the widget class. After creating a widget, the application can use the Motif provided "XtGetValues" routine to retrieve the value of a widget resource and the Motif provided "XtSetValues" routine to supply a new value for a resource.
Although the AIX operating system and the OSF/Motif GUI are quite powerful, there are many frustrations to users of AIX and other UNIX-type operating systems because tools provided for quickly locating and displaying desired data located in a data base are still rather primitive. For example, FIG. 1 shows a prior art window or panel 17 in which a table 11 of file system data is displayed. If the user desires to see information that is in a column that is not currently displayed in the panel 17 then his only choice for viewing this data is by clicking on scroll bar arrow 13R or 13L to move scroll slider 19 within scroll bar 15 to cause the columns in the table to shift to the left or the right. Thus, for example, if the user wants to see the contents of the fifth column identified with a partial label "Resid" then he must click on 13R (R is used to indicate right) to cause the data object 19 representing a scroll slider to move to the right. This will cause column 5 to come further into view in panel 17. Further, a disadvantage of such a system for displaying columns in a table is that there is no way for the user to know what each column contains without moving the slider across its full spectrum within the scrolling bar 15. It is possible that the user may miss some information because columns are not displayed within a window.
It would clearly be an advancement in the art to provide a graphical user interface with such a system as a UNIX operating system to provide a quick way for knowing by iconic or object representation which columns are located in a table and further providing a quick way to locate and display such columns. Further, it would be desirable to provide such a system that is compatible with tools provided with the operating system, such as widgets in the case of a UNIX-type operating system.